//该文件用于创建Vuex中最为核心的store
import Vue from 'vue'
//引入Vuex
import Vuex from 'vuex'
//应用vuex插件
Vue.use(Vuex)

//求和相关的配置
const countOptions={
    namespaced:true,
    //准备actions——用于响应组件中的动作
    actions:{
        addOdd(context,value){
            if(context.state.sum%2){
                console.log("actions中的addOdd被调用了")
                context.commit("Addmore",value)
            }
        },
        addWait(context,value){
            setTimeout(()=>{
                console.log("actions中的addWait被调用了")
                context.commit("Addmore",value)
            },500)
        }
    },
    //准备mutations——用于操作数组（state）
    mutations:{
        Addmore(state,value){
            console.log("mutations中的Addmore被调用了")
            state.sum+=value
        },
        Deduce(state,value){
            console.log("mutations中的Deduce被调用了")
            state.sum-=value
        },
    },
    //准备state——用于存储数组
    state:{
        sum:0,
        school:"幸福大学",
        subject:"计算机",
    },
    //准备getters——用于将state中的数据进行加工
    getters:{
        bigSum(state){
            return state.sum*10
        }
    }
}

//人员相关的配置
const personOptions={
    namespaced:true,
    actions:{
        addPersonWang(context,value){
            if(value.name.indexOf("王")==0){
                context.commit("AddPerson",value)
            }else{
                alert("添加的必须是姓王的人!")
            }
        }
    },
    mutations:{
        AddPerson(state,value){
            state.personList.unshift(value)
        }
    },
    state:{
        personList:[
            {id:"001",name:"张三"}
        ]
    },
    getters:{
        firstPersonName(state){
            return state.personList[0].name
        }
    }
}


//创建并暴露store
export default new Vuex.Store({
    modules:{
        countAbout:countOptions,
        personAbout:personOptions
    }
})
